package com.bls.cate.mvp;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener {

    protected boolean isResume = false;  // 是否走OnResume() ;  经过onPause()方法后 走OnResume()

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initRoot();
        initParams();
        setContentView(initLayoutId());
        initFvb();
        initTitle();
        initView();
        initListener();
        initData();
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (isResume)
            initOnResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        isResume = true;
        initOnPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        initOnDestroy();
    }

    /**
     * 初始化配置
     */
    protected abstract void initRoot();


    /**
     * 初始化参数
     */
    protected abstract void initParams();

    /**
     * 获取布局文件
     *
     * @return 布局文件Id
     */
    protected abstract int initLayoutId();


    /**
     * findViewBuyId
     */
    protected abstract void initFvb();

    /**
     * 初始化标题栏
     */
    protected abstract void initTitle();

    /**
     * 初始化布局
     */
    protected abstract void initView();


    /**
     * 初始化 监听事件
     */
    protected abstract void initListener();


    /**
     * 初始化数据
     */
    protected abstract void initData();

    /**
     * 等同于 onResume() 方法
     */
    protected abstract void initOnResume();

    /**
     * 等同于onPause()方法
     */
    protected abstract void initOnPause();

    /**
     * 等同于 onDestroy()方法
     */
    protected abstract void initOnDestroy();


    /*得到Activity*/
    protected Activity getActivity() {
        return this;
    }

    /**
     * 设置点击按钮的监听事件
     *
     * @param views views
     */
    protected void setOnClickListener(View... views) {
        for (View view : views) {
            view.setOnClickListener(this);
        }
    }

    /*点击事件*/
    @Override
    public void onClick(View view) {

    }
}
